#!/bin/bash
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Uploads and executes a file in the VM. This script can be set as a runner
# for cargo to execute tests inside the VM.

${0%/*}/wait_for_vm_with_timeout || exit 1

vm_tmp_dir=/var/tmp

if [ "$1" = "--no-sync" ]; then
    shift
else
    echo "Syncing dependencies..."
    ${0%/*}/sync_deps || exit 1
fi

filepath=$1
filename=$(basename $filepath)

echo "Executing $filename ${@:2}"
scp -q $filepath vm:$vm_tmp_dir/$filename
ssh vm -q -t "cd $vm_tmp_dir && sudo ./$filename ${@:2}"

# Make sure to preserve the exit code of $filename after cleaning up the file.
ret=$?
ssh vm -q -t "rm $vm_tmp_dir/$filename"
exit $ret
